from abc import ABC, abstractmethod
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from ..player import Player
    from ..enemy import Enemy

class Card(ABC):
    def __init__(self, name: str, cost: int, description: str):
        self.name = name
        self.cost = cost
        self.description = description
    
    @abstractmethod
    def use(self, player: 'Player', target: 'Enemy') -> None:
        pass
    
    @property
    @abstractmethod
    def card_type(self) -> str:
        pass 